package com.bzm.common.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * @Description:序列号工具类
 * @author hm
 * @time:2018年11月27日 上午10:04:10
 */
public class SerialNumberUtils {
	
	/**
	 * 商品编号  	
	 */
	public static final String PRODUCT_INFO = "100"; 
	
	/**
	 * 用户文件日志			
	 */
	public static final String USER_FILE = "200"; 
	
	/**
	 * 订单编号 
	 */
	public static final String ORDER_INFO = "300"; 
	
	/**
	 * recycle_info
	 */
	public static final String RECYCLE_INFO = "400"; 
	
	/**
	 * number_format
	 */
	public static final SimpleDateFormat number_format = new SimpleDateFormat("yyMMddHHmm"); 
	
	/**
	 * @Description:生成规则     年月日时分 + 业务类型 + 主账号用户id + 随机数 5 位
	 * @param type		序列号类型
	 * @param userId	用户id
	 * @return
	 * String
	 * @exception:
	 * @author: hemiao
	 * @time:2018年11月27日 上午10:21:39
	 */
	public static String createNumber(String type,Integer userId) {
		StringBuilder number = new StringBuilder();
		// 年月日时分						
		number.append(number_format.format(new Date()));
		// 业务编号	   
		number.append(type);
		// 主账号用户id   唯一
		number.append(userId);
		// 5位随机数	
		Random random = new Random();
		// 创建一个 随机的  2位整数
		int i = random.nextInt(50);
		if(i<10) {
			i = 88;
		}
		// 获得6位随机数
		int abs = (int)((Math.random()*9+1)*100000);
		// 5位随机数
		StringBuilder sb = new StringBuilder();
		// 6 位 除以 2位  等于 随机数 如果随机数的长度小于5 就 再加一个随机数
		Integer r = abs / i;
		sb.append(r);
		// 判断
		if(r.toString().length()<5) {
			int i2 = random.nextInt(9);
			sb.append(i2);
		}
		return number.append(sb).toString();
	}
	
	public static void main(String[] args) {
		String createNumber = createNumber(ORDER_INFO, 1000);
		System.out.println(createNumber);
	}
}
